package com.xbx.admin.service.user;

import com.github.pagehelper.PageInfo;
import com.xbx.admin.entity.user.Module;
import com.xbx.admin.entity.user.Role;
import com.xbx.admin.entity.user.User;
import com.xbx.admin.entity.user.form.RoleInfoForm;
import com.xbx.admin.entity.user.form.SettingModuleForm;
import com.xbx.admin.entity.user.form.UserInfoForm;
import com.xbx.admin.entity.user.req.UserInfoReq;

import java.util.List;

/**
 * 用户管理服务类
 *
 * @author 89005691
 * @create 2018-08-30 20:05
 */
public interface UserService {

    /**
     * 查询用户列表
     *
     * @param userInfoReq
     * @return
     */
    PageInfo<User> pageUserInfoList(UserInfoReq userInfoReq);

    /**
     * 用户授予角色
     */
    String allocateRole(UserInfoForm userInfoForm) throws Exception;

    /**
     * 删除用户
     */
    String deleteUser(Long id) throws Exception;

    /**
     * 查询角色列表
     *
     * @param userInfoReq
     * @return
     */
    PageInfo<Role> pageRoleInfoList(UserInfoReq userInfoReq);

    /**
     * 改变角色状态
     *
     * @param id
     * @param status
     * @return
     * @throws Exception
     */
    String changeRole(Long id, Integer status) throws Exception;

    /**
     * 创建用户角色
     *
     * @return
     * @throws Exception
     */
    String createRole(RoleInfoForm roleInfoForm) throws Exception;

    /**
     * 查询菜单列表
     *
     * @param selectButton
     * @param roleId
     * @return
     */
    List<Module> listModuleInfoList(boolean selectButton, Long roleId);

    /**
     * 设置权限
     *
     * @return
     * @throws Exception
     */
    String settingPermission(SettingModuleForm settingModuleForm) throws Exception;

    /**
     * 删除角色
     */
    String deleteRole(Long id) throws Exception;

    /**
     * 查询按钮是否有权限
     *
     * @param codes
     * @return
     * @throws Exception
     */
    List<Module> selectAuthByCodes(String codes);
}
